#===istalismanplugin===
# -*- coding: utf-8 -*-

# $Revision: 52 $
# $Author: rchiganov@gmail.com $
# $Date: 2013-07-29 04:17:07 +0000 (Mon, 29 Jul 2013) $

#  Talisman plugin
#  ping_plugin.py

#  Initial Copyright © 2007 dimichxp <dimichxp@gmail.com>
#  Modifications Copyright © 2007 Als <Als@exploit.in>

#  This program is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2 of the License, or
#  (at your option) any later version.

#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.

# Mod by Gigabyte
# mail: gigabyte@ngs.ru
# conf: stalker@conference.jabbers.ru

#---------------------------------------------------------------------------------------------------

ping_pending = []

#---------------------------------------------------------------------------------------------------

def handler_ping ( type, source, parameters ):
	nick=parameters
	groupchat=source[1]
	iq = xmpp.Iq('get')
	id = 'p'+str(random.randrange(1, 1000))
	globals()['ping_pending'].append(id)
	iq.setID(id)
	iq.addChild('query', {}, [], 'jabber:iq:version');
	if parameters:
		if GROUPCHATS.has_key(source[1]):
			nicks = GROUPCHATS[source[1]].keys()
			param = parameters.strip()
			if not nick in nicks:
				iq.setTo(param)
			else:
				if GROUPCHATS[groupchat][nick]['ishere']==0:
					reply(type, source, u'Что-то я его или ее не нахожу? *DONT_KNOW*')
					return
				param=nick
				jid=groupchat+'/'+nick
				iq.setTo(jid)
	else:
		jid=groupchat+'/'+source[2]
		iq.setTo(jid)
		param=''
	t0 = time.time()
	JCON.SendAndCallForResponse(iq, handler_ping_answ,{'t0': t0, 'mtype': type, 'source': source, 'param': param})
	return

#---------------------------------------------------------------------------------------------------

def handler_ping_answ ( coze, res, t0, mtype, source, param ):
	id = res.getID()
	if id in globals()['ping_pending']:
		globals()['ping_pending'].remove(id)
	else:
		print 'someone is doing wrong...'
		return
	if res:
		if res.getType() == 'result':
			t = time.time()
			rep = u''
			if param:
				rep += random.choice([u'Задержка от ' + param + u' составляет', u'Скорость отклика сервера для ' + param + u' равна', u'Скорость отправки пакетов от ' + param + u' составляет', u'Опа! Что я откопала! Это же понг от ' + param + ':'])
			else:
				rep += random.choice([u'Твой понг составляет', u'Скорость отклика сервера для тебя равна', u'Скорость отправки твоих пакетов', u'Опа! Что я откопала! Это же твой понг:'])
			rep += u' ' + str(round(t - t0, 3)) + u' секунд.'
			png = round(t - t0, 3)
			if png < 0.10:
				rep += u' Ого какой(ая) ты реактивный(ая), прямо моторчик в одном месте! *JOKINGLY*'
			if ( png > 0.09 ) & ( png < 0.50 ):
				rep += u' Твой понг отличный, но как ты понимаешь можно и лучше! ;)'
			if ( png > 0.49 ) & ( png < 1.00 ):
				rep += u' Твой понг нормальный! GPRS, да? Или галимый провайдер, да?!'
			if ( png > 0.99 ) & ( png < 1.20 ):
				rep += u' Твой понг нормален, GPRS... Может конечно и тормознутый провайдер *PARDON*'
			if ( png > 1.19 ) & ( png < 1.60 ):
				rep += u' Твой понг медленный, GPRS... Убей провайдеров, они не следят за твоим инетом ]:->'
			if ( png > 1.59 ) & ( png < 2.00 ):
				rep += u' Твой понг очень медленный, не представляю как ты вообще сидишь с таким интернетом :('
			if ( png > 1.99 ) & ( png < 6.00 ):
				rep += u' От тебя отклик еле приходит, я удивляюсь что ты это читаешь'
			if png > 5.99:
				rep += u' Может зайдешь позже, тогда и нормально поговоришь?!'
		else:
			rep = u'Я блондинка или я такого не вижу?!'
	reply(mtype, source, rep)

#---------------------------------------------------------------------------------------------------

register_command_handler(handler_ping, '.', ['инфо', 'мук', 'все'], 0, 'Пингует тебя или определённый ник или сервер.', 'пинг [ник]', ['пинг guy','пинг jabber.aq'])
register_command_handler(handler_ping, 'пинг', ['инфо', 'мук', 'все'], 0, 'Пингует тебя или определённый ник или сервер.', 'пинг [ник]', ['пинг guy','пинг jabber.aq'])

#---------------------------------------------------------------------------------------------------
